
/**
 * Project Name:cats-core
 * File Name:MenuService.java
 * Package Name:com.catsic.core.menu.service
 * Date:2014年3月24日下午3:12:43
 * Copyright (c) 2014, oa.catsic.com All Rights Reserved.
 */
 
package com.catsic.core.menu.service;

import java.util.List;

import com.catsic.base.BaseService;
import com.catsic.base.accordion.Accordion;
import com.catsic.base.tree.TreeInfo;
import com.catsic.core.entity.Menu;
import com.catsic.core.form.MenuForm;
/**
 * ClassName: MenuService
 * Description: 菜单接口
 * date: 2014年3月24日 下午3:12:43
 * author: yangyd
 */
public interface MenuService extends BaseService<Menu, String> {
	/**
	 * add:添加菜单
	 * @author yangyd
	 * @param  form
	 * @return MenuForm
	 */ 
	public MenuForm add(MenuForm form);
	
	/**
	 * update:更新菜单
	 * @author yangyd
	 * @param  form
	 * @return MenuForm
	 */ 
	public MenuForm update(MenuForm form);
	
	/**
	 * findById:通过ID获取菜单列表.
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public Menu findById(String id);
	
	/**
	 * findByName:通过Code获得菜单.
	 * @author yangyd
	 * @param name
	 * @return
	 */
	public Menu findByCode(String code);
	
	/**
	 * findByLikeCode:通过Code获得菜单列表.
	 * @author yangyd
	 * @param code
	 * @return
	 */
	public List<Menu> findByLikeCode(String code);
	
	/**
	 * 注销
	 * @param id
	 * @return
	 */
	public void cancel(String id);
	
	/**
	 * 删除节点
	 * @param id
	 * @return
	 */
	public void delete(String id);
	
	/**
	 * 激活节点
	 * @param id
	 * @return
	 */
	public void active(String id);
	
	/**通过用户Id查询该用户角色对应的菜单
	 * @param userId
	 * @return
	 */
	public List<Accordion> findUserMenuByUserId(String userId);
	
	/**通过用户Id查询该用户角色对应的菜单
	 * @param userId
	 * @return
	 */
	public List<MenuForm> findUserMenuFormByUserId(String userId);

	/**
	 * findMenuListById:通过用户Id查询该用户角色对应的菜单
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public List<Menu> findMenuListById(String id);
	
	/**
	 * findOrganMenuListById:通过用户Id查询该用户机构对应的菜单
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public Menu findOrganMenuListById(String id);
	
	/**
	 * findByName:通过名称获得菜单列表.
	 * @author yangyd
	 * @param name
	 * @return
	 */
	public List<Menu> findByName(String name);
	
	/**
	 * tree:获取菜单树结构
	 * @author yangyd
	 * @param 用户id
	 * @return
	 */
	public List<Accordion> tree(String id);
	
	/**
	 * findByUserIdOrderByCodeAsc:通过用户ID获取用户的角色对应的菜单
	 * @author yangyd
	 * @param 用户id
	 * @return
	 */
	public List<Menu> findByUserIdOrderByCodeAsc(String id);
	
	/**
	 * findByPid:通过父节点ID获取子节点
	 * @author yangyd
	 * @param 父节点id
	 * @return
	 */
	public List<Menu> findByPid(String id);
	
	/**
	 * getTreeInfo:通过用户ID获取用户的角色对应的菜单
	 * @author yangyd
	 * @param 用户id
	 * @return
	 */
	public List<TreeInfo> getTreeInfo(String id);
	
	/**
	 * 通过父ID取得子节点
	 * @param 
	 */
	public List<MenuForm> query(String id);
}
